4.3 Understanding basic validation
- 웹 워크에서 수행되는 Validation 단계
- 자동적으로 action들의 validate 수행
- 에러들을 수집하고 사용자에게 보고함
4.3.1 Validating an action: Validateable
- WebWork에서는 execute() 메소드를 콜하기 전에 validate를 수행한다.
- 자동으로 validate를 수행하게 하기 위해서는 com.opensymphony.xwork.Validateable 인터페이스를 구현 해야 한다.
public void validate()
- execute() method에서 내용을 검증하는 예전 방식 코드
public String execute() throws Exception {
// 이름이 이미 존재하는지 검증로직 시작 //
User existing = userDAO.findByUsername(this.user.getUsername());
if (existing != null) {
addFieldError("user.username", "The user already exists");
return INPUT;
}
//검증 로직 끝 //
userDAO.makePersistent(user);
return SUCCESS;
}
- validate() method를 사용하여 검증하는 코드
//검증로직
public void validate() {
// see if the name already exists
User existing = userDAO.findByUsername(this.user.getUsername());
if (existing != null) {
addFieldError("user.username", "The user already exists");
}
}
//실행로직
public String execute() throws Exception {
userDAO.makePersistent(user);
return SUCCESS;
}
- DefaultWorkFlowInterceptor 에 의해 조정됨
- action이 Validateable을 구현하고 있다면 validate() method를 실행함
- 만약 에러가 발생하면 INPUT을 리턴 그렇지 않으면 action의 execute를 실행
4.3.2 Displaying error messages: ValidationAware
- ValidationAware는 에러메세지를 모으고 디스플레이 기능을 지원하는 인터페이스임.
- ActionSupport가 com.opensymphony.xwork.ValidationAware 인터페이스를 구현 해줌.
- 83page ValidationAware 인터페이스 참고
- actionErrors, actionMessages: String error message를 저장, java.util.Collection 로 관리
- fieldErrors : key, value 쌍으로 error message를 저장, java.util.Map 으로 관리
- 참고 : fieldErrors jsp 사용
<%@ taglib prefix="ww" uri="webwork" %>
<html>
<head>
<title>Enter your name</title>
</head>
<body>
<ww:if test="fieldErrors['name'] != null">
<font color="red">
<ww:property value="fieldErrors['name']"/>
</font>
</ww:if>
Please enter your name:
<form action="/helloWorld.action">
<input type="textfield" name="name" value="<ww:property value="name"/>"/>
<input type="submit"/>
</form>
</body>
</html>
- ActionSupport를 상속 하지 않는 경우라면 com.opensymphony.xwork.ValidationAwareSupport를 사용하여 ValidationAware 구현하면 됨
문서에 대하여